SQL IN Operator

WHERE கிளாஸில் பல மதிப்புகளைக் குறிப்பிட IN ஆபரேட்டர் உங்களை அனுமதிக்கிறது

SQL IN ஆபரேட்டர்

IN ஆபரேட்டர் WHERE கிளாஸில் பல மதிப்புகளைக் குறிப்பிட உங்களை அனுமதிக்கிறது.

IN ஆபரேட்டர் பல OR நிபந்தனைகளுக்கான ஒரு சுருக்கமாகும்.

உதாரணம்

'Germany', 'France', அல்லது 'UK' இலிருந்து அனைத்து வாடிக்கையாளர்களையும் திரும்பப் பெற:

SELECT * FROM Customers
WHERE Country IN ('Germany', 'France', 'UK');

💡 குறிப்பு:

IN ஆபரேட்டர் பல OR நிபந்தனைகளை எழுதுவதை விட எளிதானது மற்றும் படிக்க எளிதானது.

IN தொடரியல்

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);

ஆர்ப்பாட்ட தரவுத்தளம்

உதாரணங்களில் பயன்படுத்தப்படும் Customers அட்டவணையிலிருந்து ஒரு தேர்வு கீழே உள்ளது:

CustomerID CustomerName ContactName Address City PostalCode Country
1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany
2 Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Constitución 2222 México D.F. 05021 Mexico
3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México D.F. 05023 Mexico
4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK
5 Berglunds snabbköp Christina Berglund Berguvsvägen 8 Luleå S-958 22 Sweden

NOT IN

IN ஆபரேட்டருக்கு முன்னால் NOT முக்கிய சொல்லைப் பயன்படுத்துவதன் மூலம், பட்டியலில் உள்ள மதிப்புகளில் எதுவும் இல்லாத அனைத்து பதிவுகளையும் திரும்பப் பெறுகிறீர்கள்.

உதாரணம்

'Germany', 'France', அல்லது 'UK' இலிருந்து இல்லாத அனைத்து வாடிக்கையாளர்களையும் திரும்பப் பெற:

SELECT * FROM Customers
WHERE Country NOT IN ('Germany', 'France', 'UK');

குறிப்பிட்ட நாடுகள் தவிர

குறிப்பிட்ட நாடுகளைத் தவிர்த்து மற்ற அனைத்தும்

SELECT * FROM Customers
WHERE Country NOT IN ('USA', 'Canada');

குறிப்பிட்ட நகரங்கள் தவிர

குறிப்பிட்ட நகரங்களைத் தவிர்த்து மற்ற அனைத்தும்

SELECT * FROM Customers
WHERE City NOT IN ('London', 'Paris', 'Berlin');

IN (SELECT)

WHERE கிளாஸில் ஒரு துணைக் கேள்வியுடன் IN ஐயும் பயன்படுத்தலாம்.

ஒரு துணைக் கேள்வியுடன், துணைக் கேள்வியின் முடிவில் உள்ள முக்கியக் கேள்வியிலிருந்து அனைத்து பதிவுகளையும் திரும்பப் பெறலாம்.

உதாரணம்

Orders அட்டவணையில் ஒரு ஆர்டர் உள்ள அனைத்து வாடிக்கையாளர்களையும் திரும்பப் பெற:

SELECT * FROM Customers
WHERE CustomerID IN (SELECT CustomerID FROM Orders);

🔍 முக்கியமான குறிப்பு:

துணைக் கேள்விகள் சிக்கலான வடிகட்டுதலுக்கு பயனுள்ளதாக இருக்கும். அவை ஒரு அட்டவணையிலிருந்து மற்றொரு அட்டவணையுடன் இணைக்க உதவுகின்றன.

NOT IN (SELECT)

மேலே உள்ள உதாரணத்தில் முடிவு 74 பதிவுகளைத் திரும்பப் பெற்றது, அதாவது 17 வாடிக்கையாளர்கள் எந்த ஆர்டர்களையும் வைக்கவில்லை.

NOT IN ஆபரேட்டரைப் பயன்படுத்தி, அது சரியானதா என்பதைச் சரிபார்க்கலாம்.

உதாரணம்

Orders அட்டவணையில் எந்த ஆர்டர்களையும் வைக்காத அனைத்து வாடிக்கையாளர்களையும் திரும்பப் பெற:

SELECT * FROM Customers
WHERE CustomerID NOT IN (SELECT CustomerID FROM Orders);

IN vs பல OR நிபந்தனைகள்

IN ஆபரேட்டர்

WHERE Country IN 
('Germany', 'France', 'UK');
  • சுருக்கமானது மற்றும் தெளிவானது
  • படிக்க எளிதானது
  • பராமரிக்க எளிதானது
  • குறைந்த தவறுகள்
  • மதிப்புகள் அதிகமாக இருக்கும்போது சிறந்தது

பல OR நிபந்தனைகள்

WHERE Country = 'Germany' 
OR Country = 'France' 
OR Country = 'UK';
  • நீண்ட மற்றும் சிக்கலானது
  • படிக்க கடினமானது
  • பராமரிக்க கடினமானது
  • அதிக தவறுகள்
  • மதிப்புகள் குறைவாக இருக்கும்போது மட்டும்

நடைமுறை உதாரணங்கள்

குறிப்பிட்ட பணியாளர்கள்

குறிப்பிட்ட ஐடிகளைக் கொண்ட பணியாளர்கள்

SELECT * FROM Employees
WHERE EmployeeID IN (101, 105, 108, 112);

குறிப்பிட்ட பொருட்கள்

குறிப்பிட்ட வகைகளில் உள்ள பொருட்கள்

SELECT * FROM Products
WHERE CategoryID IN (1, 3, 5);

செயலில் உள்ள வாடிக்கையாளர்கள்

குறைந்தபட்சம் ஒரு ஆர்டர் உள்ள வாடிக்கையாளர்கள்

SELECT * FROM Customers
WHERE CustomerID IN (
  SELECT DISTINCT CustomerID 
  FROM Orders
);

மேம்பட்ட பொருட்கள்

குறிப்பிட்ட விலை வரம்பில் இல்லாத பொருட்கள்

SELECT * FROM Products
WHERE Price NOT IN (10, 20, 30, 40);

மேம்பட்ட உதாரணங்கள்

பல அட்டவணைகள்

இரண்டு அட்டவணைகளில் இருந்து தரவு

SELECT * FROM Products
WHERE SupplierID IN (
  SELECT SupplierID 
  FROM Suppliers 
  WHERE Country = 'USA'
);

தேதி வரம்பு

குறிப்பிட்ட மாதங்களில் ஆர்டர்கள்

SELECT * FROM Orders
WHERE MONTH(OrderDate) IN (1, 2, 12);

தள்ளுபடி பொருட்கள்

குறிப்பிட்ட தள்ளுபடி விகிதங்கள்

SELECT * FROM Products
WHERE Discount IN (10, 15, 20, 25);

மதிப்பீட்டு வரம்பு

குறிப்பிட்ட மதிப்பீடுகளைக் கொண்ட பொருட்கள்

SELECT * FROM Products
WHERE Rating IN (4, 5);

செயல்திறன் உதவிக்குறிப்புகள்

🚀 செயல்திறன் மேம்பாடுகள்:

  • குறியீட்டு பயன்பாடு: IN ஆபரேட்டருடன் பயன்படுத்தப்படும் நிரல்களில் குறியீடுகளை உருவாக்கவும்
  • மதிப்புகளின் எண்ணிக்கை: மிக அதிகமான மதிப்புகளைத் தவிர்க்கவும் (100+)
  • துணைக் கேள்விகள்: பெரிய துணைக் கேள்விகளுக்கு EXISTS பயன்படுத்தவும்
  • தரவு வகைகள்: மதிப்புகள் சரியான தரவு வகையில் இருப்பதை உறுதிப்படுத்தவும்

⚠️ தவிர்க்க வேண்டியவை:

  • மிக நீண்ட மதிப்புப் பட்டியல்கள்
  • மெதுவான துணைக் கேள்விகள்
  • சரியான தரவு வகை இல்லாமை
  • குறியீடுகள் இல்லாமை

பயிற்சி

SQL IN ஆபரேட்டரின் முதன்மை நோக்கம் என்ன?

WHERE கிளாஸில் மதிப்புகளின் வரம்பைக் குறிப்பிட
✗ தவறு! இது BETWEEN ஆபரேட்டரின் வேலை
அட்டவணையிலிருந்து அனைத்து நிரல்களையும் தேர்ந்தெடுக்க
✗ தவறு! இது SELECT * இன் வேலை
WHERE கிளாஸில் பல மதிப்புகளைக் குறிப்பிட
✓ சரி! IN ஆபரேட்டர் WHERE கிளாஸில் பல மதிப்புகளைக் குறிப்பிட பயன்படுகிறது
வைல்ட்கார்ட் தேடலைச் செய்ய
✗ தவறு! இது LIKE ஆபரேட்டரின் வேலை